home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2002 #11 / Amiga Plus CD - 2002 - No. 11.iso / Tools / Development / PowerD / alpha / examples / progress.d < prev    next >
Encoding:
Text File  |  2002-10-28  |  1.8 KB  |  69 lines

  1. // this example shows the usage of the 'PowerD Progress Port'
  2. // just run this and execute some PowerD compilation
  3.  
  4. MODULE    'exec/ports',
  5.             'exec/tasks',
  6.             'dos/dos'
  7.  
  8. ENUM    PROGRESS_None,
  9.         PROGRESS_Error,
  10.         PROGRESS_Done,
  11.         PROGRESS_NotDone,
  12.         PROGRESS_Cleaning,
  13.         PROGRESS_Working,
  14.         PROGRESS_Scanning,
  15.         PROGRESS_Writing,
  16.         PROGRESS_Compiling,
  17.         PROGRESS_Linking,
  18.         PROGRESS_PreProcessing,
  19.         PROGRESS_Break,
  20.         PROGRESS_SavingModule
  21.  
  22. OBJECT progressmsg
  23.     mn:MN,
  24.     operation:UL,
  25.     a/b/c/d/e:L
  26.  
  27. PROC main()
  28.     DEF    port:PTR TO MP,msg:PTR TO progressmsg,signal
  29.     IF port:=CreateMsgPort()
  30.         port.LN.Name:='PowerD Progress Port'
  31.         port.LN.Pri:=-128
  32.         AddPort(port)
  33.  
  34.         DEF    exit=FALSE
  35.  
  36.         PrintF('Press Ctrl+C to break.\n')
  37.  
  38.         REPEAT
  39.             signal:=Wait(1<<port.SigBit|SIGBREAKF_CTRL_C)
  40.             IF signal&1<<port.SigBit
  41.                 WHILE msg:=GetMsg(port)
  42.                     SELECT msg.operation
  43.                     CASE PROGRESS_Done;                PrintF('Done.\n')
  44.                     CASE PROGRESS_NotDone;            PrintF('Not done.\n')
  45.                     CASE PROGRESS_Cleaning;            PrintF('Cleaning...\n')
  46.                     CASE PROGRESS_Working;            PrintF('Working...\n')
  47.                     CASE PROGRESS_Scanning;            PrintF('Scanning (\d) \s...\n',msg.a,msg.b)
  48.                     CASE PROGRESS_Writing;            PrintF('Writing (\d\%=\d/\d)...\n',msg.a,msg.b,msg.c)
  49.                     CASE PROGRESS_Compiling;        PrintF('Compiling...\n')
  50.                     CASE PROGRESS_Linking;            PrintF('Linking...\n')
  51.                     CASE PROGRESS_PreProcessing;    PrintF('PreProcessing (\d)...\n',msg.a)
  52.                     CASE PROGRESS_SavingModule;    PrintF('Saving Module...\n')
  53.                     CASE PROGRESS_Break;                PrintF('***Break.\n')
  54.                     CASE PROGRESS_Error;                PrintF('Error(\d) on line \d: \s\n',msg.a,msg.c,msg.b)
  55.                         // msg.d is pointer to source code (READ ONLY!!!!!)
  56.                         // msg.e is position in the source code
  57.                     ENDSELECT
  58.                     ReplyMsg(msg)
  59.                 ENDWHILE
  60.             ELSEIF signal&SIGBREAKF_CTRL_C
  61.                 exit:=TRUE
  62.             ENDIF
  63.         UNTIL exit
  64.  
  65.         RemPort(port)
  66.         DeleteMsgPort(port)
  67.     ENDIF
  68. ENDPROC
  69.